package com.xuecheng.api.media;

import com.xuecheng.api.content.model.vo.CourseAuditVo;
import com.xuecheng.api.media.model.dto.MediaDTO;
import com.xuecheng.api.media.model.qo.QueryMediaModel;
import com.xuecheng.api.media.model.vo.MediaAuditVo;
import com.xuecheng.api.media.model.vo.MediaVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.common.domain.response.RestResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

/**
 * 媒资管理
 */
@Api(value = "媒资管理", tags = "媒资管理API",description = "对媒资信息进行管理")
public interface MediaApi {


    @ApiOperation(value = "保存媒资信息")
    @ApiImplicitParam(name = "mediaVO",value = "需要保存的媒资信息数据",required = true,paramType = "body",dataType = "MediaVO")
    MediaDTO saveMedia(MediaVO mediaVO);


    @ApiOperation(value = "媒资信息查询")
    @ApiImplicitParams({
         @ApiImplicitParam(name = "PageRequestParams",value = "分页查询的参数",required = true,paramType = "query",dataType = "PageRequestParams"),
         @ApiImplicitParam(name = "QueryMediaModel",value = "分页模糊查询的条件",required = true,paramType = "body",dataType = "QueryMediaModel")
    })
    PageVO queryMediaList(PageRequestParams params, QueryMediaModel model);


    @ApiOperation(value = "预览媒资")
    @ApiImplicitParam(name = "mediaId",value = "媒资id",required = true,paramType = "path",dataType = "Long")
    String previewMedia(Long mediaId);


    @ApiOperation(value = "根据媒资id删除媒资数据，逻辑删除")
    @ApiImplicitParam(name = "mediaId",value = "媒资id",required = true,paramType = "path",dataType = "Long")
    void deleteMedia(Long mediaId);


    @ApiOperation(value = "根据id查询媒资信息")
    @ApiImplicitParam(name = "mediaId",value = "媒资id",required = true,paramType = "path",dataType = "Long")
    RestResponse<MediaDTO> queryMediaById(Long mediaId);


    @ApiOperation(value = "运用平台查询媒资信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "PageRequestParams",value = "分页查询的参数",required = true,paramType = "query",dataType = "PageRequestParams"),
            @ApiImplicitParam(name = "QueryMediaModel",value = "分页模糊查询的条件",required = true,paramType = "body",dataType = "QueryMediaModel")
    })
    PageVO RunQueryMediaList(PageRequestParams params,QueryMediaModel model);


    @ApiOperation(value = "运营平台预览媒资")
    @ApiImplicitParam(name = "mediaId",value = "媒资id",required = true,paramType = "path",dataType = "Long")
    String RunPreviewMedia(Long mediaId);


    @ApiOperation(value = "运营平台审核教育机构媒资")
    @ApiImplicitParam(value = "modifyCourseAudit",required = true,dataType = "CourseAuditVo",paramType = "body")
    void modifyCourseAudit(MediaAuditVo mediaAuditVo);
}
